/**
 * @description: 钉钉授权登录及用户信息获取
 * @version: 0.0.1
 * @author: z..
 * @Date: 2023-06-12 18:16:39
 */

import { Inject, Controller, Post, Body, Get } from '@midwayjs/core';
import { DingtalkRobotWebapiService } from '../service/dingtalk.robot.webapi.service';
import { ScheduleTasksWebapiService} from "../service/schedule.tasks.webapi.service"
import { CreateWebapiDTO, UpdateWebapiDTO, UpdateWebapiStatusDTO, GetWebapiPageDTO } from '../dto/dingtalk.robot.webapi';
import { IdDTO } from "../dto/common"
import { Context } from '@midwayjs/koa';

@Controller('/api/v1/robot/webapi')
export class DingtalkRobot {
  @Inject()
  ctx: Context;

  @Inject()
  DingtalkRobotWebapiService: DingtalkRobotWebapiService;

  @Inject()
  ScheduleTasksWebapiService: ScheduleTasksWebapiService

  /**
   * @summary 手动测试webapi通知
   * @description 手动测试webapi通知
   * @router post /api/v1/robot/webapi/webApiQueueTasks
   * @response 200 baseResponse 返回结果
   */
  @Get('/webApiQueueTasks')
  async webApiQueueTasks(): Promise<any> {
    return await this.ScheduleTasksWebapiService.webApiQueueTasks();
  }

  /**
   * @summary 手动测试webapi通知
   * @description 手动测试webapi通知
   * @router post /api/v1/robot/webapi/testingByid
   * @response 200 baseResponse 返回结果
   */
  @Post("/testingByid")
  async testingWebapiByid(@Body() options: IdDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.testingWebapiByid(options.id);
  }

  /**
   * @summary 新增webapi通知
   * @description 新增webapi通知
   * @router post /api/v1/robot/webapi/create
   * @response 200 baseResponse 返回结果
   */
  @Post("/create")
  async createWebapi(@Body() options: CreateWebapiDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.createWebapi(options);
  }

  /**
   * @summary 更新webpai信息
   * @description 更新webpai信息
   * @router post /api/v1/robot/webapi/update
   * @response 200 baseResponse 返回结果
   */
  @Post("/update")
  async updateWebapi(@Body() options: UpdateWebapiDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.updateWebapi(options);
  }

  /**
   * @summary 任务通知分页查询
   * @description 任务通知分页查询
   * @router post /api/v1/robot/webapi/get
   * @response 200 baseResponse 返回结果
   */
  @Post("/get")
  async getWebapiPage(@Body() options: GetWebapiPageDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.getWebapiPage(options);
  }

  /**
   * @summary 删除webapi
   * @description 删除webapi
   * @router post /api/v1/robot/webapi/del
   * @response 200 baseResponse 返回结果
   */
  @Post("/del")
  async delWebapiById(@Body() options: IdDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.delWebapiById(options);
  }

  /**
   * @summary 修改webapi通知状态
   * @description 修改webapi通知状态
   * @router post /api/v1/robot/webapi/updateStatus
   * @response 200 baseResponse 返回结果
   */
  @Post("/updateStatus")
  async updateWebapiStatus(@Body() options: UpdateWebapiStatusDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.updateWebapiStatus(options);
  }

  /**
   * @summary 查询api手动测试的数量
   * @description 查询api手动测试的数量
   * @router post /api/v1/robot/webapi/testingLogs
   * @response 200 baseResponse 返回结果
   */
  @Post("/testingLogs")
  async getWebapiTestingLogsById(@Body() options: IdDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.getWebapiTestingLogsById(options.id);
  }

  /**
   * @summary 查询api近期日志
   * @description 查询api近期日志
   * @router post /api/v1/robot/webapi/webApiLogs
   * @response 200 baseResponse 返回结果
   */
  @Post("/webApiLogs")
  async webApiLogs(@Body() options: IdDTO): Promise<any> {
    return await this.DingtalkRobotWebapiService.webApiLogs(options.id);
  }

}
